﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using IAC_2013.com.iac.form;
using IAC_2013.com.iac.action;
using DevComponents.DotNetBar.Controls;
using System.Data.SqlClient;
using IAC_2013.com.iac.util;
namespace IAC_2013.Controls
{
    public partial class Partners : UserControl
    {
        private PartnersAction action;
        private DataTable tb;
        SqlConnection conn = new SqlConnection(DBUtils.CONNECTION_STRING);
        private ValidateUtils validates;
        private CommonUtils utils;
        private Boolean checkPhone = true;
        private Boolean checkFax = true;
        private Boolean checkEmail = true;
        private Boolean checkCode = true;
        public Partners()
        {
            InitializeComponent();
            load_data();

        }

        private MetroBillCommands _Commands;
        public MetroBillCommands Commands
        {
            get { return _Commands; }
            set 
            {
                if (value != _Commands)
                {
                    MetroBillCommands oldValue = _Commands;
                    _Commands = value;
                    OnCommandChanged(oldValue, value);
                }
            }
        }

        public virtual void OnCommandChanged(MetroBillCommands oldValue, MetroBillCommands newValue)
        {
            if (newValue != null)
            {
                btBack.Command = newValue.Partners.Cancel;
            }
            else
            {
                btBack.Command = null;
            }
        }

        private void btSave_Click(object sender, EventArgs e)
        {
            PartnerForm frm = new PartnerForm();
            validates = new ValidateUtils();
            utils = new CommonUtils();
            action = new PartnersAction();

            if (!txtPartnerCode.Text.Trim().Equals(""))
            { 
                checkCode = CommonUtils.checkCode(frm.code, frm.partnerCode, "ma_ncc", "ncc_nha_cung_cap", "add");
            }
            if(!txtPartnerPhone.Text.Trim().Equals(""))
            {
                checkPhone = validates.checkNumber(frm.partnerPhone);
            }
            if (!txtPartnerFax.Text.Trim().Equals(""))
            {
                checkFax = validates.checkNumber(frm.partnerFax);
            }
            if (!txtPartnerEmail.Text.Trim().Equals(""))
            {
                checkEmail = validates.checkEmail(frm.partnerFax);
            }

            frm.partnerCode = txtPartnerCode.Text;
            frm.partnerName = txtPartnerName.Text;
            frm.partnerAddress = txtParnerAddress.Text;
            frm.partnerPhone = txtPartnerPhone.Text;
            frm.partnerFax = txtPartnerFax.Text;
            frm.partnerEmail = txtPartnerEmail.Text;
            frm.partnerWebsite = txtPartnerWebsite.Text;

            if (checkCode == false)
            {
                MessageBox.Show("Mã Nhà Cung Cấp đã tồn tại, vùi lòng nhập mã khác!");
            }
            else if (frm.partnerCode.Trim().Equals("") || frm.partnerName.Trim().Equals(""))
            {
                if (frm.partnerCode.Trim().Equals(""))
                {
                    MessageBox.Show("Mã Nhà Cung Cấp chưa có!");
                }
                else if (frm.partnerName.Trim().Equals(""))
                {
                    MessageBox.Show("Tên Nhà Cung Cấp chưa có!");
                }
                else
                {
                    MessageBox.Show("Mã Nhà Cung Cấp và Tên Nhà Cung Cấp chưa có!");
                }
            }  
            else if (checkPhone == false)
            { 
                MessageBox.Show("Số điện thoại nhập vào không đúng định dạng!");
            } 
            else if (checkFax == false)
            {
                MessageBox.Show("Số Fax nhập vào không đúng định dạng!");
            }
            else if (checkEmail == false)
            {
                MessageBox.Show("Email không đúng định dạng!");
            }
            else
            {
                DialogResult result;
                result = MessageBox.Show("Chắc chắn bạn muốn ghi lại không?", "Có/Không", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    Boolean check = action.addPartners(frm);
                    if (check == true)
                    {
                        MessageBox.Show("Thêm Dữ Liệu Thành Công!");
                        load_data();

                    }
                    else
                    {
                        MessageBox.Show("Thêm Dữ Liệu Không Thành Công!");
                    }
                }

            }
        }

        public void load_data()
        {
            string sql = "SELECT * FROM ncc_nha_cung_cap ncc ORDER BY ncc.ten_ncc DESC ";
            try
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = sql;
                cmd.Connection = conn;
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                tb = new DataTable();
                da.Fill(tb);
                grvPartners.DataSource = tb;
                conn.Close();
            }
            catch (Exception)
            { 
            
            
            }
        }

        public void grv_newCell(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow grv_next = grvPartners.Rows[e.RowIndex];
            load_data();
        }

        private void btReset_Click(object sender, EventArgs e)
        {
            txtParnerAddress.Text = "";
            txtPartnerCode.Text = "";
            txtPartnerEmail.Text = "";
            txtPartnerFax.Text = "";
            txtPartnerName.Text = "";
            txtPartnerPhone.Text = "";
            txtPartnerWebsite.Text = "";
            txtPartnerId.Text = "";
            code.Text = "";
        }

        private void grvPartners_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int r = grvPartners.CurrentCell.RowIndex;
            txtPartnerId.Text = grvPartners.Rows[r].Cells[0].Value.ToString();
            txtPartnerCode.Text = grvPartners.Rows[r].Cells[1].Value.ToString();
            code.Text = grvPartners.Rows[r].Cells[1].Value.ToString();
            txtPartnerName.Text = grvPartners.Rows[r].Cells[2].Value.ToString();
            txtParnerAddress.Text = grvPartners.Rows[r].Cells[3].Value.ToString();
            txtPartnerPhone.Text = grvPartners.Rows[r].Cells[4].Value.ToString();
            txtPartnerFax.Text = grvPartners.Rows[r].Cells[5].Value.ToString();
            txtPartnerEmail.Text = grvPartners.Rows[r].Cells[6].Value.ToString();
            txtPartnerWebsite.Text = grvPartners.Rows[r].Cells[7].Value.ToString();
        }

        private void Partners_Load(object sender, EventArgs e)
        {

        }

        private void btBack_Click(object sender, EventArgs e)
        {

        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            PartnerForm frm = new PartnerForm();
            utils = new CommonUtils();
            validates = new ValidateUtils();
            if (!txtPartnerId.Text.Trim().Equals(""))
            {
                frm.partnerId = Int32.Parse(txtPartnerId.Text);
            }
            frm.code = code.Text;
            frm.partnerCode = txtPartnerCode.Text;
            frm.partnerName = txtPartnerName.Text;
            frm.partnerAddress = txtParnerAddress.Text;
            frm.partnerPhone = txtPartnerPhone.Text;
            frm.partnerFax = txtPartnerFax.Text;
            frm.partnerEmail = txtPartnerEmail.Text;
            frm.partnerWebsite = txtPartnerWebsite.Text;

            
            if (!frm.partnerFax.Trim().Equals(""))
            {
                checkFax = validates.checkNumber(frm.partnerFax);
            }
            if (!frm.partnerPhone.Trim().Equals(""))
            {
                checkPhone = checkPhone = validates.checkNumber(frm.partnerPhone); 
            }
            if (!frm.partnerEmail.Trim().Equals(""))
            {
                checkEmail = validates.checkEmail(frm.partnerEmail);
            }
            if (!frm.partnerCode.Trim().Equals(""))
            {
                checkCode = CommonUtils.checkCode(frm.code, frm.partnerCode, "ma_ncc", "ncc_nha_cung_cap", "edit");
            }

            if (frm.partnerId == null)
            {
                MessageBox.Show("Bạn cần chọn một cột dữ liệu để sửa!");
            
            }
            else if (frm.partnerCode.Trim().Equals("") && frm.partnerName.Trim().Equals(""))
            {
                MessageBox.Show("Mã và Tên Nhà Cung Cấp không được để trống!");
            }
            else if (frm.partnerCode.Trim().Equals(""))
            {
                MessageBox.Show("Mã Nhà Cung Cấp không được để trống!");
            }
            else if (checkCode == false)
            {
                MessageBox.Show("Mã Nhà Cung Cấp đã tồn tại!");
            }
            else if (frm.partnerName.Trim().Equals(""))
            {
                MessageBox.Show("Tên Nhà Cung Cấp không được để trống!");
            }
            else if (!frm.partnerPhone.Trim().Equals("") && checkPhone == false)
            {
                MessageBox.Show("Số điện thoại không không phải là kiểu số!");
            }
                    
            else if (!frm.partnerFax.Trim().Equals("") && checkFax == false)
            {
                MessageBox.Show("Bạn nhập số Fax không đúng!");
            }
            else if (!frm.partnerEmail.Trim().Equals("") && checkEmail == false)
            {
                MessageBox.Show("Sai kiểu dữ liệu Email!");
            }
            else
            {
                DialogResult result;
                result = MessageBox.Show("Chắc chắn bạn muốn sửa lại thông tin?", "Có/Không", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    Boolean checkEdit = new PartnersAction().updatePartner(frm);
                    if (checkEdit == true)
                    {
                        load_data();
                        MessageBox.Show("Cập nhật thông tin thành công!");
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thông tin không thành công!");
                    }
                }
            }
        }
        
    }
}
